/**
 * 将常用form方法添加
 * Created by konbluesky on 14-8-7.
 */
$(function () {
    $.fn.xxxx = function () {
        console.debug("1.0.0.1");
    };
    /*初始化toastr函数*/
    function initToastr() {
        toastr.options = {
            "closeButton": true,
            "debug": false,
            "positionClass": "toast-top-center",
            "onclick": null,
            "showDuration": "1000",
            "hideDuration": "1000",
            "timeOut": "5000",
            "extendedTimeOut": "1000",
            "showEasing": "swing",
            "hideEasing": "linear",
            "showMethod": "fadeIn",
            "hideMethod": "fadeOut"
        }
    }

    initToastr();
    /*初始化左侧菜单选中节点*/
    function initMenuSelectNode() {
        if (!$.cookie) {
            alert("cookie 插件引入失败，请检查js文件状况！");
            return;
        }
        /**
         * 修复左侧菜单展开规则;
         * 原规则直接将cookies中url匹配左侧菜单.
         * 不试用/module/add;/module/type/add/xxx类型url
         * 新规则使用贪心匹配,"/"切段,逐段匹配,选最接近的第一条数据;
         * @Author konbluesky
         * @date 2015-12-01 15:46
         */
        var curNode = $.cookie("curnode");
        var preNode;
        var path=App.appName;
        $.each(curNode.replace(App.appName,"").split("/"),function(i,value){
            if(value){
                var _tn=$(".page-sidebar-menu").find("a[href^='"+path+"/"+value+"']");
                if(_tn){
                    preNode=_tn;
                    path+="/"+value;
                }
                //console.debug("value:"+value+"\n_tn:"+_tn+"\npath:"+path);
            }
        });
        //console.debug(preNode);
        $(preNode).first().find("i").addClass("Active").parents("li").addClass("active").show();
        jQuery(".page-sidebar-menu").find("li.active").find(".arrow").addClass("open");
        //对比当前url中是否包含左侧菜单节点
        //var localurl = location.href;
        //var count = localurl.indexOf(curNode);
        //if (curNode && count >= 0) {
        //    var c = $(".page-sidebar-menu").find("a[href$='" + curNode + "']");
        //    c.find("i").addClass("Active").parents("li").addClass("active").show();
        //    jQuery(".page-sidebar-menu").find("li.active").find(".arrow").addClass("open");
        //}
    }

    initMenuSelectNode();
});

/**
 * 注册增删查改动作
 * 特定动作可以【预】注册
 * 注册后由用户不定时激活
 * @param options
 *
 */
function setFormAjaxAction(options) {
    //1.参数合并
    var defConfig = {
        modaldom: {},
        actiondom: {},
        actionurl: "",
        initEvent: function (config) {
        },
        callbackEvent: function (config) {
        },
        okevent: function (config) {
        }
    };
    defConfig = $.extend(defConfig, options);
    var modal = $(defConfig.modaldom);
    $(defConfig.actiondom).click({config: defConfig}, function (e) {
        //initEvent
        if (e.data.config.initEvent) {
            e.data.config.initEvent.call(this, e.data.config);
        }
        //2.执行回掉函数
        if (e.data.config.callbackEvent) {
            e.data.config.callbackEvent.call(this, e.data.config);
        }
    });

    /*3.确定 按钮*/
    var okbtn = modal.find(".modal-footer .btn-primary");
    //执行一次click后要解除绑定，否则click事件会叠加处理
    okbtn.unbind("click");
    okbtn.click(function () {
        defConfig.okevent.call(this, defConfig);
        //执行后确定后,事件
        if (defConfig.afterok) {
            defConfig.afterok.call(this, defConfig);
        }
    });
}
/**
 * 系统用的消息提示函数
 * @param options
 * @constructor
 */
function SystemConfirm(options) {
    /*
     *   modeldom 默认指定 id=system_modal 的modal
     *   见 file: base.ftl => Modal_SystemOpera
     *
     * */
    var defConfig = {
        modaldom: "system_modal",
        msg: "",
        okevent: function (config) {
        }
    };
    if (typeof options == 'string') {
        options = {msg: options};
    }

    /*1.入参合并*/
    defConfig = $.extend(defConfig, options);
    var modal = $("#" + defConfig.modaldom);

    /*2.提示信息修改,先清空再传值*/
    if (defConfig.msg && defConfig.msg.trim()) {
        var body = modal.find(".modal-body");
        body.empty();
        body.text(defConfig.msg);
    }

    /*3.ok按钮事件注册*/
    var okbtn = modal.find(".modal-footer .btn-success");
    //执行一次click后要解除绑定，否则click事件会叠加处理
    okbtn.unbind("click");
    okbtn.click(function () {
        defConfig.okevent.call(this, defConfig);
        //执行后确定后,事件
        if (defConfig.afterok) {
            defConfig.afterok.call(this, defConfig);
        }
    });

    /*4.弹出框调用*/
    modal.modal({backdrop: false});
}

function updateEvent(options) {
    //1.参数合并
    var defConfig = {
        modaldom: {},
        actiondom: {},
        actionurl: "",
        callbackEvent: function () {
        },
        okevent: function (config) {
        },
        afterok: function (config) {
        }
    };
    defConfig = $.extend(defConfig, options);
    var modal = $(defConfig.modaldom);
    var ajaxbody = modal.find(".modal-body");

    //2.加载context
    ajaxbody.load(defConfig.actionurl, function () {
        //初始化checkbox，radio ====start
        if (!jQuery().uniform) {
            return;
        }
        var curCtrs = $(this).find("input[type=checkbox]:not(.toggle), input[type=radio]:not(.toggle, .star)");
        if (curCtrs.size() > 0) {
            curCtrs.each(function () {
                if ($(this).parents(".checker").size() == 0) {
                    $(this).show();
                    $(this).uniform();
                }
            });
        }
        //初始化checkbox，radio ====end

        if (defConfig.callbackEvent) {
            defConfig.callbackEvent.call(this, defConfig);
        }

    });
    //3.弹出层
    modal.modal({backdrop: false});

    //4.注册确定按钮事件
    var okbtn = modal.find(".modal-footer .btn-primary");
    okbtn.unbind("click");
    okbtn.click(function () {
        defConfig.okevent.call(this, defConfig);
        //执行一次click后要解除绑定，否则click事件会叠加处理
        //执行后确定后,事件
        if (defConfig.afterok) {
            defConfig.afterok.call(this, defConfig);
        }
    });
}


var CONST_ACTION = {
    DELETE: {
        msg: "请您确认当前的删除操作！",
        actionurl: "",
        actiondom: {},
        okevent: function (config) {
            var modal = $("#" + config.modaldom);
            var url = config.actionurl || "";
            $.getJSON(url, function (data, status, xhr) {
                if (data.status) {
                    toastr.success(data.msg, '操作提示');
                    //$(config.actiondom).parents("tr").remove();
                    $(modal).modal('hide');
                } else {
                    toastr.error(data.msg, '操作提示');
                }
            });
        },
        afterok: function (config) {
        }
    },
    INFO: {
        msg: "请您确认当前的操作！",
        actionurl: "",
        actiondom: {},
        okevent: function (config) {
            var modal = $("#" + config.modaldom);
            var url = config.actionurl || "";
            $.getJSON(url, function (data, status, xhr) {
                if (data.status) {
                    toastr.success(data.msg, '操作提示');
                    $(modal).modal('hide');
                } else {
                    toastr.error(data.msg, '操作提示');
                }
            });
        },
        afterok: function (config) {
        }
    },
    UPDATE: {
        modaldom: {},
        actiondom: {},
        actionurl: "",
        callbackEvent: function (config) {
        },
        okevent: function (config) {
            var modal = $(config.modaldom);
            $(modal).find("form").ajaxSubmit(function (data, status, xhr) {
                if (data.status) {
                    toastr.success(data.msg, '操作提示');
                } else {
                    toastr.error(data.msg, '操作提示');
                }
            });
            $(modal).modal('hide');
        },
        afterok: function (config) {
        }
    },
    ADD: {
        modaldom: {},
        actiondom: {},
        actionurl: "",
        callbackEvent: function (config) {
            var modal = $(config.modaldom);
            var ajaxbody = $(modal).find(".modal-body");
            //if (ajaxbody.text().trim() == "") {
                ajaxbody.load(config.actionurl, function () {
                    //初始化checkbox，radio ====start
                    if (!jQuery().uniform) {
                        return;
                    }
                    var curCtrs = $(this).find("input[type=checkbox]:not(.toggle), input[type=radio]:not(.toggle, .star)");
                    if (curCtrs.size() > 0) {
                        curCtrs.each(function () {
                            if ($(this).parents(".checker").size() == 0) {
                                $(this).show();
                                $(this).uniform();
                            }
                        });
                    }
                });
            //};
            $(modal).modal({backdrop: false});
        },
        okevent: function (config) {
            var modal = $(config.modaldom);
            $(modal).find("form").ajaxSubmit(function (data, status, xhr) {
                if (data.status) {
                    toastr.success(data.msg, '操作提示');
                } else {
                    toastr.error(data.msg, '操作提示');
                }
            });
            $(modal).modal('hide');
        },
        afterok: function (config) {
        }
    }

};


/**
 * dtgrid用的静态map库
 * @type {{GENDER: {1: string, 0: string}, LIVEFLAG: {1: string, 0: string}}}
 */
var DTGRID_STATIC_LIB={
    GENDER:{1:'男', 2:'女'},
    LIVEFLAG:{1:'有效',0:"无效"},
    WHETHERFLAG:{1:'是',0:"否"},
    BOOLEANFLAG:{true:'是',false:"否"},
    REPLY:{true:'已回复',false:"未回复"}
};

/**
 * 使用FileReader本地预览图片
 * @param file
 */
function previewImage(file, imgId ) {
    if(!file.files || !file.files[0]){
        return;
    }
    var reader = new FileReader();
    reader.onload = function(evt){
        $("#"+ imgId).attr("src", evt.target.result);
        image = evt.target.result;
    }
    reader.readAsDataURL(file.files[0]);
}

/**
 * validate用的验证参数
 */
var CONST_VALIDATE = {
    OPTION: {
        errorPlacement: function(error, element) {
            if (element.is(":radio")) {
                error.appendTo(element.parent().next().next());
            }
            else if (element.is(":checkbox")) {
                error.appendTo(element.next());
            }
            else {
                error.appendTo(element.parent().next());
            }
        },
        submitHandler:function(form) {
            $(form).ajaxSubmit(function (data, status, xhr) {
                if (data.status) {
                    toastr.success(data.msg, '操作提示');
                } else {
                    toastr.error(data.msg, '操作提示');
                }
            });
        },
        success: function(label) {
            // set &nbsp; as text for IE
            label.html("<i class='fa fa-check tooltips'></i>").addClass("checked");
        },
        highlight: function(element, errorClass) {
            $(element).parent().next().find("." + errorClass).removeClass("checked");
        }
    }
};

function phoneChina() {
    jQuery.validator.addMethod("phoneChina", function(value, element) {
        var length = value.length;
        var mobile = /^(13[0-9]{9})|(18[0-9]{9})|(14[0-9]{9})|(17[0-9]{9})|(15[0-9]{9})$/;
        return this.optional(element) || (length == 11 && mobile.test(value));
    }, "请正确填写手机号码");
}